package com.ruoyi.user.service;
import java.math.BigDecimal;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.user.domain.UserProject;
import com.ruoyi.user.pojo.AppConsultantAuth;
import com.ruoyi.user.pojo.AppRegister;
import com.ruoyi.user.pojo.AppUserDetail;
import com.ruoyi.user.pojo.AppUserInfo;
import com.ruoyi.user.pojo.AppUserParam;
public interface AppUserService {

	/**
	 * 	用户手机号码登录
	 * @param appRegister	登录参数
	 * @param phone
	 * @return
	 */
	AjaxResult login(String mobile,String mobileCode,Integer type,HttpServletRequest request);
	
	AjaxResult resetPassword(String mobile,String mobileCode,String password);
	
	
	/**
	 * 	一键登录
	 * @param token
	 * @param accessToken
	 * @param request
	 * @return
	 */
	AjaxResult oneClickLogin(String accessToken,HttpServletRequest request);
	
	
	/**
	 * 	完善用户信息
	 * @param appRegister
	 * @param request
	 * @return
	 */
	AjaxResult completeUserInfo(AppRegister appRegister,HttpServletRequest request);
	
	/**
	 * 	微信登录 
	 * @param appRegister		登录参数
	 * @return
	 */
	AjaxResult wechatLogin(String unionId,String openId,HttpServletRequest request);
	
	/**
	 * 	苹果授权登录 
	 * @param appleLogin		登录参数
	 * @return
	 */
	AjaxResult appleLogin(String appleId,HttpServletRequest request);
	
	/**
	 * 	绑定手机号码
	 * @param bindingMobile		登录参数
	 * @return
	 */
	AjaxResult bindingMobile(String mobile,String mobileCode,String unionId,String openId,String appleId,HttpServletRequest request);
	
	/**
	 * 	添加用户使用意图
	 * @param name
	 * @return
	 */
	AjaxResult addUserPurpose(String name);
	
	/**
	 * 	绑定邀请码
	 * @param inviteCode
	 * @return
	 */
	AjaxResult bindInviteCode(String inviteCode);
	
	/**
     * 	更新用户经纬度
     * @param longitude		经度
     * @param latitude		纬度
     * @param city			城市
     * @return
     */
    AjaxResult updUserLongitude(BigDecimal longitude, BigDecimal latitude,String city,Integer cityCode,HttpServletRequest request);
    
    /**
     * 	用户详情
     * @param userId
     * @param request
     * @return
     */
    AjaxResult userDetail(Long userId,BigDecimal longitude,BigDecimal latitude,HttpServletRequest request);
    
    /**
     * 	用户订单评价列表
     * @param toUserId
     * @param pageNo
     * @param request
     * @return
     */
    AjaxResult userOrderEvaluateList(Long toUserId,Integer pageNo,HttpServletRequest request);
    
    /**
     *	获取用户是否是VIP 	
     * @param toUserId
     * @return
     */
    AjaxResult getIsVip(Long toUserId);
    
    /**
     * 	查询用户相册
     * @param userId
     * @param request
     * @return
     */
    AjaxResult qryUserPhoto(Long userId,HttpServletRequest request);
    
    /**
	 * 	删除用户相册
	 * @param userId
	 * @param request
	 * @return
	 */
    AjaxResult delUserPhoto(Long photoId,HttpServletRequest request);
    
    /**
	 * 	添加用户相册
	 * @param userId
	 * @param request
	 * @return
	 */
    AjaxResult addUserPhoto(List<String> photoList,HttpServletRequest request);
    
    
    /**
	 * 	我的关联数据 粉丝、关注、访客、足迹
	 * @param param
	 * @return
	 */
    AjaxResult myCorrelationList(Integer type,Integer pageNo);
    /**
	 * 	用户关注或者取消关注 
	 * @param userId
	 * @param type		1= 关注  2=取消关注 
	 * @return
	 */
    AjaxResult concernOperation(Long userId,Integer type);
    
    
    /**
     * 	查询个人信息
     * @param request
     * @return
     */
    AjaxResult qryUserInfo(HttpServletRequest request);
    
    /**
     * 	修改个人信息
     * @param userInfo
     * @param request
     * @return
     */
    AjaxResult editUserInfo(AppUserInfo userInfo,HttpServletRequest request);
    
    /**
     * 	用户个人中心
     * @param request
     * @return
     */
    AjaxResult userPersonal(HttpServletRequest request);
    
    /**
   	 * 	谁看过我 我看过谁 足迹
   	 * @param loginUserId
   	 * @param type		1=足迹(我看过谁) 2=来访(谁看过我)
   	 * @param pageNo
   	 * @param pageSize
   	 * @return
   	 */
       AjaxResult whoHaveIsee(AppUserParam param,HttpServletRequest request);
    
    /**
     * 	拉黑或者取消拉黑
     * @param userId		用户ID
     * @param request
     * @return
     */
    AjaxResult blockOrunBlock(Long userId,HttpServletRequest request);
    
    /**
	 * 	我的黑名单列表
	 * @param pageNo
	 * @return
	 */
    AjaxResult myBlacklist(Integer pageNo,HttpServletRequest request);
    
    /**
     * 	我的钱包
     * @param request
     * @return
     */
    AjaxResult myWallet(HttpServletRequest request);
    
    /**
	 * 	解锁用户微信
	 * @param userInfo.userId		用户ID
	 * @return
	 */
    AjaxResult unlockUserWechat(AppUserInfo userInfo);
    
    
    /**
	 * 	解锁用户聊天
	 * @param userInfo.userId		用户ID
	 * @return
	 */
    AjaxResult unlockUserChat(AppUserInfo userInfo);
    
    
    /**
	 * 	获取咨询师认证资料
	 * @param request
	 * @return
	 */
    AjaxResult getConsultantAuthInfo(HttpServletRequest request);
    
    /**
	 * 	修改咨询师认证资料
	 * @param request
	 * @return
	 */
    AjaxResult editConsultantAuthInfo(AppConsultantAuth consultantAuth,HttpServletRequest request);
    
    /**
	 * 	咨询师详情 - 设置标签或者语音
	 * @param user
	 * @param request
	 * @return
	 */
    AjaxResult setLableOrVoice(AppUserDetail user,HttpServletRequest request);
    
    /**
	 * 	新增或修改咨询项目
	 * @param userProject
	 * @param request
	 * @return
	 */
    AjaxResult addConsultantProject(UserProject userProject,HttpServletRequest request);
    
    /**
	 * 	获取咨询项目详情
	 * @param id
	 * @param request
	 * @return
	 */
    AjaxResult getConsultantProjectDetail(Long id,HttpServletRequest request);
    
    /**
     * 	获取充值记录
     * @return
     */
    AjaxResult getRechargeRecord(Integer pageNo);
    
    /**
	 * 	获取咨询项目列表
	 * @param pageNo
	 * @param lable
	 * @return
	 */
    AjaxResult getConsultantProjectList(Integer pageNo,String lable);
    
    /**
     * 	设置微信
     * @param wechat
     * @param request
     * @return
     */
    AjaxResult setWechat(String wechat,HttpServletRequest request);
    
    /**
     * 	设置语音地址
     * @param wechat
     * @param request
     * @return
     */
    AjaxResult setVoice(String voice,HttpServletRequest request);
    
    /**
	 * 	获取解锁微信列表
	 * @param pageNo
	 * @return
	 */
    AjaxResult getUnlockWechatList(Integer pageNo);
    
    /**
     * 	获取用户定位
     * @param userId
     * @return
     */
    AjaxResult getUserLocate(Long userId);
    
    AjaxResult updateDeviceId(String deviceId);
    
    AjaxResult setTeenageMode(Integer isYoung,String youngPwd);
    
    AjaxResult checkUserIsMsgSend(HttpServletRequest request,Long toUserId);
}
